<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
        
            push
            pop
            unshift
            shift
            reverse
            sort
            splice

            ============上面7个方法========= 原数组都发生了变化 

            =============下面的5个方法=======原数组 没有发生变化  

            // concat()
            //  语法: 原始数组.concat(数组1,数组2,数据1,数据2,...) 里边可以是数组也可以是数据 
            //  作用: 将括号内的(数组 或者数据) 拼接到原始数组的后面 
            //  返回值 : 拼接好的数组  
            

            // 跟push的区别
            //  push 改变原始数组 
            //  concat 不改变  


            //  push 直接把数据插入到数组的末尾 
            // concat 如果 括号中是数组 会把每个元素先拿出来然后拼接到原始数组后边  

            
            // slice() 

            // 语法: 数组.slice(开始的索引,结束的索引); 左闭右开 
            // 包含左边的 不包含右边的 

            // 作用: 截取部分内容 
            // 返回值一个新的数组 包含截取的内容  
            // 开始的索引可以不填  不填默认你是下标 0 
            //结束索引不填默认是数组的长度

            // 可以填写负整数  表示倒数第几个 其实就是length+负整数  
            //  0      1     2
            //  张三   李四  王五 
            //  -3     -2    -1
            //  (3-3)  (3-2) (3-1)

            // 截取方向是从左到右  

            // 如果你写的方向从右到左  肯定截取不到任何内容 
            // join() 
            // 语法: 数组.join('连接符')
            // 如果你不写连接符  默认用, 将元素拼接起来 
            // 返回值 : 连接接好的字符串
            // 作用: 使用连接符 把数组内的每一个元素 连接成一个字符串  

            // 数组->字符串 
          

            // indexOf()
            // 语法1:
                数组.indexOf(数据)
                
            // 作用: 
                从左到右 从开头 查看数据第一次在数组中的位置
                
            // 返回值:    
                如果在 返回第一次出现的位置 
                如果不在 返回 -1 
            // 语法2:
                数组.indexOf(数据,开始的索引)
            // 作用:
            //  从开始的索引往右  查看数据第一次出现的位置 
            // 返回值:
            //       如果在 返回第一次出现的位置 
            //       如果不在  返回-1



            // lastIndexOf()
            // 语法1:
                    数组.lastIndexOf(数据)
                    
                // 作用: 
                    从右到做 从结尾开始往开头的位置 查看数据第一次在数组中的位置
                    
                // 返回值:    
                    如果在 返回第一次出现的位置 
                    如果不在 返回 -1 
                // 语法2:
                    数组.lastIndexOf(数据,开始的索引)
                // 作用:
                //  从开始的索引往左 查看数据第一次出现的位置 
                // 返回值:
                //       如果在 返回第一次出现的位置 
                //       如果不在  返回-1
        */



        //数组.concat()


        // var arrs =  ['柯真冬','pgtwo','李一封','吴x凡','蔡旭坤'];
        // var res = arrs.concat(['大s','小s'],['陈建粥','范魏器'],'黄子佼','林西');

        // console.log('返回值',res);
        // console.log('原始数组',arrs);


        // var newarr = [];

        // for(var i=0;i<arrs.length;i++){
        //     newarr.push(arrs[i])
        // }

    //     // 复制一个数组 
    //     var arrs =  ['柯真冬','pgtwo','李一封','吴x凡','蔡旭坤'];

    //     var res = [].concat(arrs)
    //    console.log('返回值',res);
    //     console.log('原始数组',arrs);



    // slice()

    // var arrs =  ['柯真冬','pgtwo','李一封','吴x凡','蔡旭坤'];
    // console.log('原始数组',arrs);
    // var res = arrs.slice(1,3); // [1,3)  // 1 2
    // console.log('返回值',res);['pgtwo','李一封']
    
    // var res = arrs.slice(); // [0,arrs.length) [0,5) => 01234
    // console.log('返回值',res);

    // var res = arrs.slice(0); // 有头无尾  //[0,arrs.length) 01234
    // console.log('返回值',res);

    // 复制数组第三个方法 
    
    // console.log('原始数组',arrs)
    // var res = arrs.slice(0,-1);// [0,-1)
    // console.log('返回值',res);


    // var arrs =  ['柯真冬','pgtwo','李一封','吴x凡','蔡旭坤'];
    // console.log('原始数组',arrs)
    // var res = arrs.slice(-2,-5); // 方向是从右到左  
    // console.log('返回值',res); // 截取不到任何内容 方向必须是从左到右


    // var arrs =  ['柯真冬','pgtwo','李一封','吴x凡','蔡旭坤'];
    // console.log('原始数组',arrs)
    // var res = arrs.slice(-5,-2); // 方向是从做到右
    // console.log('返回值',res); // ['柯真冬','pgtwo','李一封']




    // join 

    // var biaobai = ['墙壁','眼睛','膝盖','wall','eye','knee'];
    // var res = biaobai.join();// 不写连接符  默认用,连接数组的每个元素
    // console.log(res,typeof res);


    // var res = biaobai.join('$');// 墙壁$眼睛$膝盖$wall$eye$knee
    // console.log(res,typeof res);

    // var res = biaobai.join('520');// 墙壁520眼睛520膝盖520wall520eye520knee
    // console.log(res,typeof res);

    // console.log(biaobai); //原数组没有任何影响



    // indexOf lastIndexOf  
    // 支持负整数  

    var wifes = ['阿珂','双儿','建宁公主','苏荃','阿珂','沐剑屏','曾柔','方怡'];

    // 数组每个位置是固定不变的  
    // 不管你从左到右 还是从 任意位置往前往后 索引始终不变  
    // var data = wifes.indexOf('阿珂'); // 0
    // var data1 = wifes.indexOf('阿珂',3);// 4

    // console.log(data,data1)

    // var data = wifes.lastIndexOf('阿珂'); // 4
    // var data1 = wifes.lastIndexOf('阿珂',-4);// 4


    // console.log(data,data1)


    // var data2 = wifes.indexOf('蔡徐坤'); // -1
    // var data3 = wifes.lastIndexOf('蔡徐坤'); // -1
    // console.log(data2,data3)


    var balls = [1,3,5,3,4,5,7,8,5,7,9,1,3,3];
    // 数组去重 
    var new_Arr = [];

    for(var v of balls){
        // 如果v这个元素不在new_Arr里边
        if(new_Arr.indexOf(v) == -1){
            new_Arr.push(v)
        }
    }

    console.log(new_Arr.sort(function(a,b){return a-b}))


    </script>
</body>
</html>